#pragma once 
#include <bits/stdc++.h>

/*****************************************************************************
 *! @brief 使用thread.join()不能获取线程的执行结果, 我们需要定义一个变量, 在线程中去给这
 *!         个变量赋值, 然后join. 这个过程是比较繁琐的, thread库提供了future用来访问异步
 *!         操作的结构. 因为异步操作的结果不能马上返回, 只能在未来的某个地方获取, 这个异步操
 *!         的结果是一个未来期待的值, 所以称为future.
 *           
 *!    我们可以查询future的状态来获取异步操作的结果，future有如下3种状态:
 *      1). deferred     异步操作开没开始
 *      2). ready        异步操作已经完成
 *      3). timeout      异步操作超时
 * 
 *!  获取future结果的三种方式:  
 *      1). get          阻塞等待异步操作, 并返回结果
 *      2). wait         只是阻塞等待异步操作完成, 不需要或者没有计算结果返回
 *      3). wait_for     超时等待返回结果
 *  
 ****************************************************************************/

int std_async_ops();